﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 结构
{
    public struct PersonStruct
    {
        public string _name;
        public string _phoneNumber;
        public string _address;
    }
    class Program
    {
        //定义一个结构体，名为PersonStruct，有三个成员变量：姓名、电话、地址，
        //在主方法中，创建一个PersonStruct结构体对象p1，为p1的成员变量赋值。
        //再声明一个PersonStruct结构体变量p2，把p1赋值给p2，改变p2的姓名，打印p1的内容。
        static void Main(string[] args)
        {
            PersonStruct p1 = new PersonStruct();
            Console.WriteLine("姓名");
            p1._name = "张三";
            Console.WriteLine("电话");
            p1._phoneNumber = "18156479685";
            Console.WriteLine("家庭住址");
            p1._address = "Mark";

            PersonStruct p2 = new PersonStruct();
            p2 = p1;


            p2._name = "李四";
            Console.WriteLine("我是{0}，我的电话号码是{1}，住在{2}",p1._name , p1._phoneNumber,p1._address);
            Console.ReadKey();

            //定义一个类，名为PersonClass，有三个成员变量：姓名、电话、地址，
            //在主方法中，创建一个PersonClass对象p3，为p3的成员变量赋值。
            //再声明一个PersonClass变量p4，把p3赋值给p4，改变p4的姓名，打印p3的内容。
            PersonClass p3 = new PersonClass();
            Console.WriteLine("姓名");
            p3.Name = "张三";
            Console.WriteLine("电话");
            p3.PhoneNumber = "18156479685";
            Console.WriteLine("家庭住址");
            p3.Address = "Mark";

            PersonClass p4 = new PersonClass();
            p4 = p3;


            p4.Name = "李四";
            Console.WriteLine("我是{0}，我的电话号码是{1}，住在{2}", p3.Name, p3.PhoneNumber, p3.Address);
            Console.ReadKey();

            //在结构中即使是改变被赋予值的变量 ， 但是原本赋值给他的变量不会被改变   值类型
            //在方法中即使是改变被赋予值的变量 ， 但是原本赋值给他的变量会被改变   引用类型
        }
    }
}
